import Vue from 'vue'
import App from './App.vue'
import router from './router'
// 导入组件
import axios from 'axios'
import Vant from 'vant'
import { Toast } from 'vant';
// 引入组件css
import 'vant/lib/index.css'
// 注册组件库标签
Vue.use(Vant)
// 将axios绑定到原型上面，使用起来更加方便
Vue.prototype.$axios = axios
Vue.config.productionTip = false
// 设置前设路由守卫
// 注意：((to, from, next)括号里面的顺序不能改变
router.beforeEach((to, from, next) => {
  var token = localStorage.getItem('token')
  if (to.meta.auth) {
    if (token) {
      return next()
    } else {
      return router.push("/login");
    }
  }
  next()
})
// axios的基准路径
axios.defaults.baseURL = "http://127.0.0.1:3000"
// axios.defaults.baseURL = "http://liangwei.tech:3000"
//axios设置请求拦截器
axios.interceptors.request.use(config => {
  if (localStorage.getItem('token') && !config.headers.Authorization) {
    config.headers.Authorization = localStorage.getItem('token')
  }
  return config
})

//axios设置响应拦截器
axios.interceptors.response.use(res => {

  const { message, statusCode } = res.data

  var reeRext = /^4\d{2}$/

  if (message && reeRext.test(statusCode)) {
    Toast.fail(message)
  }
  if (message == "用户信息验证失败") {
    router.push('/login')
  }
  return res
})
// 设置全局过滤器过滤没有带地址不完整的图片
// 注意有两个参数：第一个是名字。第二个是接受参数的函数里面写执行的逻辑
Vue.filter('filImgurl', function (url) {
  const fiterReg = /^http/
  if (fiterReg.test(url)) {
    return url
  } else {
    return axios.defaults.baseURL + url
  }
})
new Vue({
  router,
  render: function (h) { return h(App) }
}).$mount('#app')
